
# 函数 一段代码的封装，通过函数的名字 调用这段代码

# 格式
# def 函数名（参数）
#    函数的内容（一段功能代码）
#    return 计算的结果

# * 先定义，后使用
# *如果没有调用，代码不会运行

# 1.打印20个*号

# 无参数
# def print20star():
#     for i in range(20):
#         print("*",end="")
#     print("")

# 调用函数
# print20star()
# print20star()


# 有参数
# def printstar(n):          # 定义函数
#     for i in range(n):     # 定义这个函数的具体功能
#         print("*",end="")
#     print("")
# printstar(10)              # 调用这个函数

# 传入多个参数
# def printstars(m,n):       # 定义一个函数
#     for i in range(m):     # 定义这个函数的基本功能
#         for j in range(n):
#             print("*",end="")
#         print("")
# printstars(3,4)            # 调用这个函数

# 概念
# 实参 调用时，实际要进行运算的数值
# 形参 m，n形参，在函数被调用时用到，被赋予实参的值

# return 关键字
# 1，返回计算的结果给调用者
# 2.立即结束运行

# def add(a,b):         #定义一个函数
#     c = a+b           #函数具体代表内容
#     return c
# print(f"{add(100,200)}")


# 判断
# def isEven(n):
#     return (n%2==0)
# x = 4
# print(f"是否是偶数:{isEven(x)}")

# 练习:
# 编写函数并调用测试

# 1. 输出10个❤

# def printhearts():
#     for i in range(10):
#         print("❤",end="")
#     print("")
# printhearts()

# 2. 输出n个❤

# def printhearts(n):
#     for i in range(n):
#         print("❤",end="")
#     print("")
# printhearts(8)

# 3. 输出n行m列❤

# def printhearts(m,n):
#     for i in range(m):
#         for j in range(n):
#             print("❤", end="")
#         print("")
#     print("")
# printhearts(3,6)
# printhearts(4,6)

# 计算 （注意！！！ 不要在函数中打印结果!!!而是要把计算的结果return给调用者）
# 4. 计算n的m次方(不要用math数学函数)

# def power(n,m):
#     result = 1
#     for i in range(m):
#         result *= n
#     return result
# print(f"{power(2,4)}")

# 5. min(x,y)，返回传入的2个数中娇小的值

# def min(x,y):
#     if x>=y:
#         smaller = y
#     else:
#         smaller = x
#     return smaller
# x = int(input("请输入第一个数字："))
# y = int(input("请输入第二个数字："))
# print(f"较小值为：{min(x,y)}")

# 6. max(x,y,z)，返回传入的3个数中较大的的值

# x = int(input("请输入第一个整数："))
# y = int(input("请输入第二个整数："))
# z = int(input("请输入第三个整数："))
# def max(x,y,z):
#     if x>=y:
#         bigger = x
#         if x>=z:
#             bigger = x
#         else:
#             bigger = z
#     else:
#         bigger = y
#         if y>=z:
#             bigger = y
#         else:
#             bigger = z
#     return bigger
# print(f"三个数中的最大值为:{max(x,y,z)}")

# 7. abs(x),求绝对值

# x = int(input("请输入一个整数："))
# def abs(x):
#     if x>=0:
#         result = x
#     else:
#         result = 0 - x
#     return result
# print(f"该数的绝对值为：{abs(x)}")

# 8. isLeapYear(year)，传入一个年份,返回是否是闰年   返回值类型应该是布尔型

# year = int(input("请输入一个年份："))
# def isLeapYear(year):
#     if year%100==0:
#         if year%400==0:
#             result = True
#         else:
#             result = False
#     elif year%4==0:
#         result = True
#     else:
#         result = False
#     return result
# print(f"您输入的年份是否为闰年的判断：{isLeapYear(year)}")


# 9. isPrime(n),传入一个数字，返回是否是质数

# n = int(input("请输入一个数字："))
# def isPrime(n):
#     if n==1:
#         result = True
#     else:
#         for i in range(2,n):
#             if n%i==0:
#                 result = False
#                 break
#             else:
#                 i += 1
#                 if i == n:
#                     result = True
#     return result
# print(f"您输入的数字是否为质数:{isPrime(n)}")

# 10. 打印1~100,逗号分隔

# def printnumber():
#     for i in range(100):
#         print(f"{i+1},",end="")
#     print("")
# printnumber()                             # 注意：本题是无返回值的调用 若打印函数 则最后会出现 None 的标识
                                           # 即 若是对于无返回值（純操作过程） 则最后直接调用该函数即可

# 11. 打印1~n,逗号分隔

# n = int(input("请输入你说需要打印数字的数量："))
# def printnumber(n):
#     for i in range(n):
#         print(f"{i+1},",end="")
#     print("")
# printnumber(n)                                 # 注意 如果这里不写 n 则会报错 报错信息为：TypeError: printnumber() missing 1 required positional argument: 'n'
                                               # 其含义为 缺少一个必须的位置参数

# 12. 计算1+2+...+100

# def sumFormula():
#     sum = 0
#     for i in range(100):
#         sum += (i+1)
#     return sum
# # x = sumFormula()                                     #  变量是一块内存 函数不是内存 我们只能通过变量去访问一块内存
# # print(x)
# print(f"1+2+3...+100={sumFormula()}")

# 13. 计算1+2+...+n

# n = int(input("请输入一个整数："))
# def sumFormula(n):
#     sum = 0
#     for i in range(n):
#         sum += (i+1)
#     return sum
# print(f"1+2+3...+n={sumFormula(n)}")

# 14. 判断是否3位水仙数

# x = int(input("请输入一个三位数："))
# def isNarcissusnumber(x):
#     bai = x//100
#     y = x-bai*100
#     shi = y//10
#     z = y-shi*10
#     ge = z
#     if x==bai*bai*bai+shi*shi*shi+ge*ge*ge:
#         result = True
#     else:
#         result = False
#     return result
# print(f"您输入的数是否为水仙花数：{isNarcissusnumber(x)}")

# 15. 打印1个99乘法表

# def Multiplicationtable():
#     for i in range(1,10):
#         for j in range(1,10):
#             print(f"{i}*{j}={i*j}",end="\t")
#         print()   #行结束需要换行
# Multiplicationtable()

# 16. 传入一个分数，返回评价
#    优90~100良80~89中70~79及格60~69不及格0~59

# x = float(input("请输入小明的成绩："))
# def evaluationOfmarks(x):
#     if x-100>0:
#         reslut = "用户提供的成绩信息错误"
#     elif x-89>0:
#         reslut = "小明成绩为优"
#     elif x-79>0:
#         reslut = "小明成绩为良"
#     elif x-69>0:
#         reslut = "小明成绩为中"
#     elif x-59>0:
#         reslut = "小明成绩为及格"
#     elif x-0>=0:
#         reslut = "小明成绩为不及格"
#     else:
#         reslut = "用户提供的成绩信息错误"
#     return reslut
# print(f"小明的成绩评价为：{evaluationOfmarks(x)}")

# 17. 传入x1,y1,x2,y2,计算两个点的距离

# import math
# x1 = int(input("请输入第一个点的横坐标："))
# y1 = int(input("请输入第一个点的纵坐标："))
# x2 = int(input("请输入第一个点的横坐标："))
# y2 = int(input("请输入第一个点的纵坐标："))
# def Distance(x1,y1,x2,y2):
#     result = math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))      # 函数调用 （开根号的函数）
#     return result
# print(f"两点之间的距离为:{Distance(x1,y1,x2,y2)}")

# 18. 传入半径,计算球体积

# import math
# r = int(input("请输入球得半径:"))
# def volumn(r):
#     result = 4/3*(math.pi)*r**3
#     return result
# print("球的体积为:%.3f" % (volumn(r)))

# 19. 产生一个随机4位的字符串(只包含英文字母数字)

# import random
# def randomString():
#     for i in range(4):                 # 四次循环对应四位字符
#         j = random.randint(0,1)        # 随机产生的是数字还是字母
#         if j==0:                       # 代表产生的是字母
#             x = random.randint(0,25)
#             string = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
#                       't', 'u', 'v', 'w', 'x', 'y', 'z']
#             print(string[x],end="")
#         else:                          #代表产生一个数字
#             y = random.randint(0,9)
#             print(y,end="")
#     print("")
# randomString()

# 20. 传入1~7的数字，返回星期几的中文

# x = int(input("请输入一个数字（1~7）："))
# def week():
#     dataweek = ['星期一','星期二','星期三','星期四','星期五','星期六','星期天']
#     result = dataweek[x-1]
#     return result
# print(f"您输入的数字对应的星期中文为：{week()}")

# 21. 传入w s a d的字符，返回中文上下左右

# x = str(input("请输入一个字符（w s a d）:"))
# def switch(x):
#     dict1 = {'w':'上','s':'下','a':'左','d':'右'}
#     y = dict1[x]
#     return y
# print(f"{switch(x)}")
